package com.monitor.search;

import com.monitor.model.CallRecords;
import com.monitor.pubInter.BaseSearch;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;
/**
*   @author afeng
*   @Date 2025-03-17 10:50:14
*   @description CallRecordsSearch      通话记录
*/


@Data
@ApiModel("通话记录CallRecordsSearch")
public abstract class CallRecordsSearch<Sub extends CallRecordsSearch<Sub>> extends BaseSearch {
    @ApiModelProperty(value = "主键")
    private List idIn;
    @ApiModelProperty(value = "大于排序")
    private Integer sortNumGreater;
    @ApiModelProperty(value = "小于排序")
    private Integer sortNumLess;
    @ApiModelProperty(value = "是否显示 1:是:Y,0:否:N")
    private List showFlagIn;
    @ApiModelProperty(value = "是否删除 1:删除:Y,0:正常:N")
    private Integer delFlagEq=0;
    @ApiModelProperty(value = "云客用户id")
    private String ykUserIdLike;
    @ApiModelProperty(value = "用户手机号")
    private String userPhoneLike;
    @ApiModelProperty(value = "用户姓名")
    private String userNameLike;
    @ApiModelProperty(value = "客户id")
    private String customerIdLike;
    @ApiModelProperty(value = "云客客户id")
    private String ykCustomerIdLike;
    @ApiModelProperty(value = "云客通话id")
    private String ykIdLike;
    @ApiModelProperty(value = "客户id")
    private String phoneLike;
    @ApiModelProperty(value = "用户id")
    private String userIdLike;
    @ApiModelProperty(value = "大于通话时长")
    private Integer durationGreater;
    @ApiModelProperty(value = "小于通话时长")
    private Integer durationLess;
    @ApiModelProperty(value = "通话录音下载地址")
    private String recordUrlLike;
    @ApiModelProperty(value = "二级标签")
    private String tipNameLike;
    @ApiModelProperty(value = "一级标签id（可自定义)")
    private String tipTypeLike;
    @ApiModelProperty(value = "备注信息")
    private String remarkLike;
    @ApiModelProperty(value = "大于0呼出 1呼入 ")
    private Integer directionGreater;
    @ApiModelProperty(value = "小于0呼出 1呼入 ")
    private Integer directionLess;
    @ApiModelProperty(value = "预约下次沟通时间")
    private String nextContactTimeLike;
    @ApiModelProperty(value = "员工外呼SIM卡号码")
    private String simPhoneLike;
    @ApiModelProperty(value = "员工外呼SIM卡的ICCID")
    private String simNumberLike;
    @ApiModelProperty(value = "大于响铃时长")
    private Integer ringSecondGreater;
    @ApiModelProperty(value = "小于响铃时长")
    private Integer ringSecondLess;
    @ApiModelProperty(value = "开始开始响铃时间")
    private Date ringTimeStart;
    @ApiModelProperty(value = "结束开始响铃时间")
    private Date ringTimeEnd;
    @ApiModelProperty(value = "大于录音是否上传 0未上传 1已上传（未接通的通话显示为未上传)")
    private Integer isUploadGreater;
    @ApiModelProperty(value = "小于录音是否上传 0未上传 1已上传（未接通的通话显示为未上传)")
    private Integer isUploadLess;
    @ApiModelProperty(value = "开始开始通话的时间")
    private Date startCallTimeStart;
    @ApiModelProperty(value = "结束开始通话的时间")
    private Date startCallTimeEnd;

    public CallRecordsSearch() {
        setDelFlagEq(0);
    }



    /**
    * 返回子类Sub
    * @return
    */
    public abstract Sub getSubThis();

    @Override
    public String createTimeFiled() {
        return CallRecords.CREATE_TIME;
    }
    @Override
    public String updateTimeFiled() {
        return CallRecords.UPDATE_TIME;
    }
    @Override
    public String  setDefaultField() {
        return CallRecords.CREATE_TIME;
    }
    @Override
    public String pkField() {
        return CallRecords.ID;
    }

    @Override
    public String  toString() {
        return "CallRecordsSearch{}"+super.toString();
    }
    public Sub setIdIn(List idIn){
        this.idIn = idIn;
        setInField(CallRecords.ID, idIn);
        return getSubThis();
    }
    public Sub setSortNumGreater(Integer sortNumGreater){
        this.sortNumGreater = sortNumGreater;
        setGreaterField(CallRecords.SORT_NUM, sortNumGreater);
        return getSubThis();
    }
    public Sub setSortNumLess(Integer sortNumLess){
        this.sortNumLess = sortNumLess;
        setLessField(CallRecords.SORT_NUM, sortNumLess);
        return getSubThis();
    }
    public Sub setShowFlagIn(List showFlagIn){
        this.showFlagIn = showFlagIn;
        setInField(CallRecords.SHOW_FLAG, showFlagIn);
        return getSubThis();
    }
    public Sub setDelFlagEq(Integer delFlagEq){
        this.delFlagEq = delFlagEq;
        setEqualField(CallRecords.DEL_FLAG, String.valueOf(delFlagEq));
        return getSubThis();
    }
    public Sub setYkUserIdLike(String ykUserIdLike){
        this.ykUserIdLike = ykUserIdLike;
        setLikeField(CallRecords.YK_USER_ID, ykUserIdLike);
        return getSubThis();
    }
    public Sub setUserPhoneLike(String userPhoneLike){
        this.userPhoneLike = userPhoneLike;
        setLikeField(CallRecords.USER_PHONE, userPhoneLike);
        return getSubThis();
    }
    public Sub setUserNameLike(String userNameLike){
        this.userNameLike = userNameLike;
        setLikeField(CallRecords.USER_NAME, userNameLike);
        return getSubThis();
    }
    public Sub setCustomerIdLike(String customerIdLike){
        this.customerIdLike = customerIdLike;
        setLikeField(CallRecords.CUSTOMER_ID, customerIdLike);
        return getSubThis();
    }
    public Sub setYkCustomerIdLike(String ykCustomerIdLike){
        this.ykCustomerIdLike = ykCustomerIdLike;
        setLikeField(CallRecords.YK_CUSTOMER_ID, ykCustomerIdLike);
        return getSubThis();
    }
    public Sub setYkIdLike(String ykIdLike){
        this.ykIdLike = ykIdLike;
        setLikeField(CallRecords.YK_ID, ykIdLike);
        return getSubThis();
    }
    public Sub setPhoneLike(String phoneLike){
        this.phoneLike = phoneLike;
        setLikeField(CallRecords.PHONE, phoneLike);
        return getSubThis();
    }
    public Sub setUserIdLike(String userIdLike){
        this.userIdLike = userIdLike;
        setLikeField(CallRecords.USER_ID, userIdLike);
        return getSubThis();
    }
    public Sub setDurationGreater(Integer durationGreater){
        this.durationGreater = durationGreater;
        setGreaterField(CallRecords.DURATION, durationGreater);
        return getSubThis();
    }
    public Sub setDurationLess(Integer durationLess){
        this.durationLess = durationLess;
        setLessField(CallRecords.DURATION, durationLess);
        return getSubThis();
    }
    public Sub setRecordUrlLike(String recordUrlLike){
        this.recordUrlLike = recordUrlLike;
        setLikeField(CallRecords.RECORD_URL, recordUrlLike);
        return getSubThis();
    }
    public Sub setTipNameLike(String tipNameLike){
        this.tipNameLike = tipNameLike;
        setLikeField(CallRecords.TIP_NAME, tipNameLike);
        return getSubThis();
    }
    public Sub setTipTypeLike(String tipTypeLike){
        this.tipTypeLike = tipTypeLike;
        setLikeField(CallRecords.TIP_TYPE, tipTypeLike);
        return getSubThis();
    }
    public Sub setRemarkLike(String remarkLike){
        this.remarkLike = remarkLike;
        setLikeField(CallRecords.REMARK, remarkLike);
        return getSubThis();
    }
    public Sub setDirectionGreater(Integer directionGreater){
        this.directionGreater = directionGreater;
        setGreaterField(CallRecords.DIRECTION, directionGreater);
        return getSubThis();
    }
    public Sub setDirectionLess(Integer directionLess){
        this.directionLess = directionLess;
        setLessField(CallRecords.DIRECTION, directionLess);
        return getSubThis();
    }
    public Sub setNextContactTimeLike(String nextContactTimeLike){
        this.nextContactTimeLike = nextContactTimeLike;
        setLikeField(CallRecords.NEXT_CONTACT_TIME, nextContactTimeLike);
        return getSubThis();
    }
    public Sub setSimPhoneLike(String simPhoneLike){
        this.simPhoneLike = simPhoneLike;
        setLikeField(CallRecords.SIM_PHONE, simPhoneLike);
        return getSubThis();
    }
    public Sub setSimNumberLike(String simNumberLike){
        this.simNumberLike = simNumberLike;
        setLikeField(CallRecords.SIM_NUMBER, simNumberLike);
        return getSubThis();
    }
    public Sub setRingSecondGreater(Integer ringSecondGreater){
        this.ringSecondGreater = ringSecondGreater;
        setGreaterField(CallRecords.RING_SECOND, ringSecondGreater);
        return getSubThis();
    }
    public Sub setRingSecondLess(Integer ringSecondLess){
        this.ringSecondLess = ringSecondLess;
        setLessField(CallRecords.RING_SECOND, ringSecondLess);
        return getSubThis();
    }
    public Sub setRingTimeStart(Date ringTimeStart){
        this.ringTimeStart = ringTimeStart;
        setDateStartField(CallRecords.RING_TIME, ringTimeStart);
        return getSubThis();
    }
    public Sub setRingTimeEnd(Date ringTimeEnd){
        this.ringTimeEnd = ringTimeEnd;
        setDateEndField(CallRecords.RING_TIME, ringTimeEnd);
        return getSubThis();
    }
    public Sub setIsUploadGreater(Integer isUploadGreater){
        this.isUploadGreater = isUploadGreater;
        setGreaterField(CallRecords.IS_UPLOAD, isUploadGreater);
        return getSubThis();
    }
    public Sub setIsUploadLess(Integer isUploadLess){
        this.isUploadLess = isUploadLess;
        setLessField(CallRecords.IS_UPLOAD, isUploadLess);
        return getSubThis();
    }
    public Sub setStartCallTimeStart(Date startCallTimeStart){
        this.startCallTimeStart = startCallTimeStart;
        setDateStartField(CallRecords.START_CALL_TIME, startCallTimeStart);
        return getSubThis();
    }
    public Sub setStartCallTimeEnd(Date startCallTimeEnd){
        this.startCallTimeEnd = startCallTimeEnd;
        setDateEndField(CallRecords.START_CALL_TIME, startCallTimeEnd);
        return getSubThis();
    }
}